package com.huabo.base;

import java.io.Serializable;
import java.util.List;

public interface BaseService<T extends BaseModel, PK extends Serializable> {

	/**
	 * <p>Description: 添加实体</p>
	 * @param t 实体对象
	 */
	public int save(T t);

	/**
	 * <p>Description: 批量添加实体</p>
	 * @param list 实体对象列表
	 */
	public int batchSave(List<T> list);

	/**
	 * <p>Description: 更新实体，字段值为null的不更新</p>
	 * @param t 实体对象
	 */
	public int modify(T t);

	/**
	 * <p>Description: 更新实体</p>
	 * @param t 实体对象
	 */
	public int modifyForce(T t);

	/**
	 * <p>Description: 根据id删除实体</p>
	 * @param id 实体id值
	 */
	public int remove(PK id);

	/**
	 * <p>Description: 批量删除实体</p>
	 * @param ids 实体id值数组
	 */
	public int remove(PK[] ids);

	/**
	 * <p>Description: 按条件查询实体列表</p>
	 * @param qc QueryCondition对象
	 * @return 实体列表
	 */
	//public List<T> queryList(QueryCondition qc);

	/**
	 * <p>Description: 按条件分页查询实体列表</p>
	 * @param qc QueryCondition对象
	 * @return 实体列表
	 */
	//public Page<T> queryPage(QueryCondition qc);

	/**
	 * <p>Description: 按条件查询实体数量</p>
	 * @param qc QueryCondition对象
	 * @return 实体数量
	 */
	//public int count(QueryCondition qc);

	/**
	 * <p>Description: 根据id查询实体</p>
	 * @param id 实体id值
	 * @return 实体对象
	 */
	public T load(PK id);

	/**
	 * <p>Description: 按条件删除实体</p>
	 * @param qc QueryCondition对象
	 */
	//public int deleteByCondition(QueryCondition qc);
}
